﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <assert.h>
//int main()
//{
//	int ch = getchar();
//	if (ch >= 'A' && ch <= 'Z')
//	{
//		printf("大写\n");
//	}
//	else if (ch >= 'a' && ch <= 'z')
//	{
//		printf("小写\n");
//	}
//	return 0;
//}

//使用字符分类函数判断一个字母大小写
//int main()
//{
//	int ch = getchar();
//	if (islower(ch))
//	{
//		printf("小写\n");
//
//	}
//	else if (isupper(ch))
//	{
//		printf("大写\n");
//	}
//	return 0;
//}

//练习：
//写⼀个代码，将字符串中的小写字⺟转大写，其他字符不变。
//int main()
//{
//	char arr[] = "I Am A Student";
//	int i = 0;
//	while (arr[i])
//	{
//		if (islower(arr[i]))
//		{
//			//arr[i] = arr[i] - 32;
//			arr[i] = toupper(arr[i]);
//		}
//		putchar(arr[i]);
//		i++;
//	}
//	return 0;
//}

//int main()
//{
//	int ch = getchar();
//	int r = tolower(ch);
//	printf("%d\n", r);
//	return 0;
//}

//int main()
//{
//	if ((int)strlen("abc") - (int)strlen("abcdef") > 0) //3-6=3
//	{
//		printf("大于\n");
//	}
//	else
//	{
//		printf("小于等于\n");
//	}
//	return 0;
//}
 
//size_t my_strlen(const char* str)
//{
//	int count = 0;
//	while (*str)
//	{
//		str++;
//		count++;
//	}
//	return count;
//}
//int main()
//{
//	char arr[] = "abcdef";
//	size_t len = my_strlen(arr);
//	printf("%zd\n", len);
//	return 0;
//}

//size_t my_strlen2(const char* str)
//{
//	assert(str);
//	char* start = str;
//	while (*str)
//	{
//		str++;
//	}
//	return str - start;
//}
//int main()
//{
//	char arr[] = "abcdef";
//	size_t len = my_strlen2(arr);
//	printf("%zd\n", len);
//	return 0;
//}

//size_t my_strlen3(const char* str)
//{
//	if (*str == '\0')
//	{
//		return 0;
//	}
//	else
//	{
//		return 1 + my_strlen3(str + 1);
//	}
//}
//int main()
//{
//	char arr[] = "abcdef";
//	size_t len = my_strlen3(arr);
//	printf("%zd\n", len);
//	return 0;
//}

//int main()
//{
//	char arr1[20] = { 0 };
//	char arr2[] = "hello";
//	strcpy(arr1, arr2);
//	printf("%s\n", arr1);//"hello"
//	return 0;
//}

//int main()
//{
//	char arr1[20] = "XXXXXXXXXX";
//	char arr2[] = { 'a','b','c' };
//	strcpy(arr1, arr2);
//	printf("%s\n", arr1);//abc后面随机值
//	return 0;
//}

//int main()
//{
//	char arr1[5] = { 0 };
//	char arr2[] = "abcdef";
//	strcpy(arr1, arr2);
//	printf("%s", arr2);
//	return 0;
//}

//void my_strcpy(char* dest, char* src)
//{
//	while (*src != '\0')//1.拷贝\0之前的，当*src == '\0'就跳出循环
//	{
//		*dest = *src;
//		dest++;
//		src++;
//	}
//	*dest = *src;//2.这里拷贝\0
//}
//int main()
//{
//	char arr1[20] = { 0 };
//	char arr2[] = "abcdef";
//	my_strcpy(arr1, arr2);
//	printf("%s", arr2);
//		return 0;
//}

//优化
//char* my_strcpy(char*dest, char* src)
//{
//	assert(dest && src);
//	char* ret = dest;
//	while (*dest++ = *src++)
//	{
//		;
//	}
//	return ret;
//}
//int main()
//{
//	char arr1[20] = { 0 };
//	char arr2[] = "abcde";
//	printf("%s\n", my_strcpy(arr1, arr2));//直接打印返回值
//	return 0;
//}

//int main()
//{
//	char arr1[20] = "hello ";
//	char arr2[] = "world";
//	printf("%s", strcat(arr1, arr2));
//}
// 
//char* my_strcat(char* dest, const char* src)
//{
//	char* ret = dest;
//	assert(dest && src);
//	while (*dest != '\0')
//	{
//		dest++;
//	}
//	while (*dest++ = *src++)
//	{
//		;
//	}
//	return ret;
//}
//int main()
//{
//	char arr1[20] = "hello  ";
//	char arr2[] = "world";
//	printf("%s\n",my_strcat(arr1, arr2));
//	return 0;
//}

//int main()
//{
//	int ret = strcmp("abcdef", "abq");
//	if (ret > 0)
//	{
//		printf("大于\n");
//	}
//	else if (ret == 0)
//	{
//		printf("等于\n");
//	}
//	else
//	{
//		printf("小于\n");
//	}
//
//	return 0;
//}

//int my_strcmp(const char* p1,const char* p2)
//{
//	while (*p1 == *p2)
//	{
//		if (*p1 )
//		{
//			return 0;
//		}
//		p1++;
//		p2++;
//	}
//	if (*p1 > *p2)
//	{
//		return 1;
//	}
//	else
//	{
//		return -1;
//	}
//}
//int main()
//{
//	int ret = my_strcmp("abcdef", "abcdef");
//	if (ret > 0)
//	{
//		printf("大于\n");
//	}
//	else if (ret == 0)
//	{
//		printf("等于\n");
//
//	}
//	else
//	{
//		printf("小于\n");
//	}
//	return 0;
//}
